首页 > 试题广场 >

字符串加解密

[编程题]字符串加解密
  • 热度指数:256732 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

对输入的字符串进行加解密,并输出。

加密方法为:

当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;

当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;

其他字符不做变化。

解密方法为加密的逆过程。
数据范围:输入的两个字符串长度满足 ,保证输入的字符串都是只由大小写字母或者数字组成

输入描述:

第一行输入一串要加密的密码
第二行输入一串加过密的密码



输出描述:

第一行输出加密后的字符
第二行输出解密后的字符

示例1

输入

abcdefg
BCDEFGH

输出

BCDEFGH
abcdefg
import sys

while True:
    try:
        s = input()
        ss = input()
        s2 = []
        for i in s:
            if "A" <= i < "Z":
                i = chr(ord(i.lower()) + 1)
            elif "a" <= i < "z":
                i = chr(ord(i.upper()) + 1)
            elif i == "Z":
                i = "a"
            elif i == "z":
                i = "A"
            else:
                i = (int(i) + 11) % 10
            a = i
            s2.append(i)
        for i in s2:
            print(i, end="")
        print()    
        s2 = []
        for i in ss:
            if "B" < i <= "Z":
                i = chr(ord(i.lower()) - 1)
            elif "a" < i <= "z":
                i = chr(ord(i.upper()) - 1)
            elif i == "a":
                i = "Z"
            elif i == "B":
                i = "a"
            elif i =='A':
                i = 'z'
            else:
                i = (int(i) + 9) % 10
            a = i
            s2.append(i)
        for i in s2:
            print(i, end="")


    except:
        break
编辑于 2024-03-19 16:07:58 回复(0)
def shift1(text):
    shift_text = ""
    for char in text:
        if char.isalpha():
            if char == 'z':
                shift_text += 'A'
            elif char == 'Z':
                shift_text += 'a'
            else:
                if char.islower():
                    shift_text += chr(ord(char)+1).upper()
                else:
                    shift_text += chr(ord(char)+1).lower()
        else:
            if char == '9':
                shift_text += '0'
            else:
                new_char = int(char) + 1
                shift_text += str(new_char)
              
    return shift_text

def shift2(text):
    shift_text = ""
    for char in text:
        if char.isalpha():
            if char == 'A':
                shift_text += 'z'
            elif char == 'a':
                shift_text += 'Z'
            else:
                if char.islower():
                    shift_text += chr(ord(char)-1).upper()
                else:
                    shift_text += chr(ord(char)-1).lower()
        else:
            if char == '0':
                shift_text += '9'
            else:
                new_char = int(char) - 1
                shift_text += str(new_char)
              
    return shift_text

while True:
    try:
        x,y = input(),input()
        shift_x = shift1(x)
        shift_y = shift2(y)
        print(shift_x)
        print(shift_y)

    except:
        break

发表于 2023-05-23 14:52:25 回复(0)
str1 = input()
str2 = input()

a = range(97,123)
mw = [chr(i) for i in a]
b = [122] + [i for i in range(97,122)]
mm = [chr(i) for i in b]
mw += [i for i in range(1,10)]
mw.append(0)
mm += [i for i in range(10)]
jiam ={}
jiem ={}
for i in range(len(mw)):
    jiem[mw[i]]=mm[i]
    jiam[mm[i]]=mw[i]

str11 = []
str22 = []
for i in str1:
    if i.isdigit():
        str11.append(str(jiam[int(i)]))
    else:
        jj = i.lower()
        tmp = jiam[jj]
        if i.islower():
            tmp = tmp.upper()
        str11.append(tmp)

for i in str2:
    if i.isdigit():
        str22.append(str(jiem[int(i)]))
    else:
        jj = i.lower()
        tmp = jiem[jj]
        if i.islower():
            tmp = tmp.upper()
        str22.append(tmp)
print(''.join(str11))
print(''.join(str22))

发表于 2023-01-12 18:06:39 回复(0)
while True:
    try:
        a = input()
        b = input()
        c = ""
        d = ""
        for i in a:
            if i.isalpha():
                if i == "z" or i == "Z":
                    i = chr(ord(i) - 25).swapcase()
                else:
                    i = chr(ord(i) + 1).swapcase()
            elif i.isdigit():
                if i == '9':
                    i = 0
                else:
                    i = int(i) + 1

            c += str(i)
        for i in b:
            if i.isalpha():
                if i == "a" or i == "A":
                    i = chr(ord(i) + 25).swapcase()
                else:
                    i = chr(ord(i) - 1).swapcase()
            elif i.isdigit():
                if i == '0':
                    i = 9
                else:
                    i = int(i) - 1
            d += str(i)
        print(c)
        print(d)
    except:
        
        break
发表于 2022-09-20 15:04:58 回复(0)
while True:
    try:
        def get_private(s):
            res = ''
            for item in s:
                if item.isnumeric():
                    if int(item) != 9:
                        res += str(int(item) + 1)
                    elif int(item) == 9:
                        res += '0'
                elif item.islower() and item != 'z':
                    res += chr(ord(item) - 31)
                elif item == 'z':
                    res += 'A'
                elif item.isupper() and item != 'Z':
                    res += chr(ord(item) + 33)
                elif item == 'Z':
                    res += 'a'
                else:
                    res += item
            return res
        def release(s):
            res = ''
            for item in s:
                if item.isnumeric():
                    if int(item) != 0:
                        res += str(int(item) - 1)
                    elif int(item) == 0:
                        res += '9'
                elif item.islower() and item != 'a':
                    res += chr(ord(item) - 33)
                elif item == 'a':
                    res += 'Z'
                elif item.isupper() and item != 'A':
                    res += chr(ord(item) + 31)
                elif item == 'A':
                    res += 'z'
                else:
                    res += item
            return res
        s1 = input()
        s2 = input()
        print(get_private(s1))
        print(release(s2))
    except:
        break

发表于 2022-09-13 04:19:17 回复(0)
#像我这样的笨蛋写出来的方法
st = input()
s0 = input()

upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
s = ''
for i in st: 
    if i in upper:
        s = s + chr(ord(i.lower())+ 1)
    else:
        s = s + chr(ord(i.upper())+ 1)
s = s.replace(':','0').replace('[','A').replace('{','a')    
print(s)

s1 = ''
for i in s0: 
    if i in upper:
        s1 = s1 + chr(ord(i.lower())- 1)
    else:
        s1 = s1 + chr(ord(i.upper())- 1)
s1 = s1.replace('@','Z').replace('`','z').replace('/','9')
print(s1)
发表于 2022-09-09 23:05:58 回复(0)
coding_in=list(input())
coding_out=[]
coded_in=list(input())
coded_out=[]
for item in coding_in:
    if item.isupper():
        if item=='Z':
            coding_out.append('a')
        else:
            coding_out.append(chr(ord(item.lower())+1))
    elif item.islower():
        if item=='z':
            coding_out.append('A')
        else:
            coding_out.append(chr(ord(item.upper())+1))
    else:
        coding_out.append(str((int(item)+1)%10))
        
for item in coded_in:
    if item.isupper():
        if item=='A':
            coded_out.append('z')
        else:
            coded_out.append(chr(ord(item.lower())-1))
    elif item.islower():
        if item=='a':
            coded_out.append('Z')
        else:
            coded_out.append(chr(ord(item.upper())-1))
    else:
        coded_out.append(str((int(item)+9)%10))
        
print(''.join(coding_out))
print(''.join(coded_out))

发表于 2022-09-07 17:11:00 回复(0)
# 最常见的解法,有点长,不过看着简单


# 加密方法
def __encode(_en):
    __de = []
    for i in _en:
        if i.isdigit():
            if int(i)==9:
                __de.append(str(0))
            else:
                __de.append(str(int(i)+1))
        else:
            if i.islower():
                if i == 'z':
                    __de.append('A')
                else:
                    __de.append(chr(ord(i)+1).upper())
            else:
                if i == 'Z':
                    __de.append('a')
                else:
                    __de.append(chr(ord(i)+1).lower())
    return ''.join(__de)

# 解密方法
def __decode(_de):
    __en = []
    for i in _de:
        if i.isdigit():
            if int(i)==0:
                __en.append(str(9))
            else:
                __en.append(str(int(i)-1))
        else:
            if i.islower():
                if i == 'a':
                    __en.append('Z')
                else:
                    __en.append(chr(ord(i)-1).upper())
            else:
                if i == 'A':
                    __en.append('z')
                else:
                    __en.append(chr(ord(i)-1).lower())
    return ''.join(__en)


_en = input()
_de = input()

de_en = __encode(_en)
en_de = __decode(_de)
print(de_en)
print(en_de)

发表于 2022-09-05 15:48:09 回复(0)
s1 = input()
s2 = input()
result = ""
result2 = ""
for s in s1:
    if "a" <= s <= "y":
        result += chr(ord(s.upper())+1)
    if "A" <= s <= "Y":
        result += chr(ord(s.lower())+1)
    if s == "z":
        result += "A"
    if s == "Z":
        result += "a"
    if 48 <= ord(s) <= 56:
        result += chr(ord(s)+1)
    if s == "9":
        result += "0"
for s in s2:
    if "b" <= s <= "z":
        result2 += chr(ord(s.upper())-1)
    if "B" <= s <= "Z":
        result2 += chr(ord(s.lower())-1)
    if s == "a":
        result2 += "Z"
    if s == "A":
        result2 += "z"
    if 49 <= ord(s) <= 57:
        result2 += chr(ord(s)-1)
    if s == "0":
        result2 += "9"
print(result) 
print(result2)
发表于 2022-09-01 16:45:21 回复(1)
很多细小的点需要注意,调试了几回
while True:
    try:
        a = list(input())
        b = list(input())
        c = 0
        m = 0
        # 加密都加1
        for i in range(len(a)):
            if a[i].isupper():
                if a[i] == 'Z':
                    a[i] = 'a'
                else:
                    a[i] = a[i].lower()
                    c = ord(a[i]) + 1
                    a[i] = chr(c)
            elif a[i].islower():
                if a[i] == 'z':
                    a[i] = 'A'
                else:
                    a[i] = a[i].upper()
                    c = ord(a[i]) + 1
                    a[i] = chr(c)
            elif a[i].isdigit():
                if a[i] == '9':
                    a[i] = '0'
                else:
                    a[i] = int(a[i]) + 1
                    a[i] = str(a[i])   # 数字转换str
            else:
                a[i] = a[i]  # 其它不变
        # 解密都-1
        for i in range(len(b)):
            if b[i].isupper():
                if b[i] == 'A':
                    b[i] = 'z'
                else:
                    b[i] = b[i].lower()
                    m = ord(b[i]) - 1
                    b[i] = chr(m)
            elif b[i].islower():
                if b[i] == 'a':
                    b[i] = 'Z'
                else:
                    b[i] = b[i].upper()
                    m = ord(b[i]) - 1
                    b[i] = chr(m)
            elif b[i].isdigit():
                if b[i] == '0':
                    b[i] = '9'
                else:
                    b[i] = int(b[i]) - 1
                    b[i] = str(b[i])
            else:
                b[i] = b[i]
        print(''.join(a))
        print(''.join(b))
    except:
        break

发表于 2022-08-22 10:28:22 回复(0)
def encode(num):
    result = ""
    for i in num:
        if i.isalpha():
            if ord(i) < 91:
                if i == 'Z':
                    result += 'a' 
                else:
                    result += chr(ord(i)+1).lower()
            else:
                if i == 'z':
                    result += 'A'
                else:
                    result += chr(ord(i)+1).upper()
        elif i.isdigit():
            if i == '9':
                result += '0'
            else:
                result += '{}'.format(int(i)+1)
        else:
            result += i
    return result

def decode(num):
    result = ""
    for i in num:
        if i.isalpha():
            if ord(i) < 91:
                if i == 'A':
                    result += 'z' 
                else:
                    result += chr(ord(i)-1).lower()
            else:
                if i == 'a':
                    result += 'Z'
                else:
                    result += chr(ord(i)-1).upper()
        elif i.isdigit():
            if i == '0':
                result += '9'
            else:
                result += '{}'.format(int(i)-1)
        else:
            result += i
    return result

while True:
    try:
        num1 = str(input())
        num2 = str(input())
        print(encode(num1))
        print(decode(num2))
    except:
        break

发表于 2022-08-17 20:59:54 回复(0)
num_in = '0123456789'
alpha_in = 'abcdefghijklmnopqrstuvwxyz'
def code(s:str):
    res = ''
    for i in s:
        if i.isnumeric():
            if i != '9':
                res += num_in[num_in.find(i)+1]
            else:
                res += '0'
        elif i.isalnum():
            if i.lower() != 'z':
                if i.isupper():
                    res += alpha_in[alpha_in.find(i.lower())+1]
                else:
                    res += alpha_in[alpha_in.find(i.lower())+1].swapcase()
            else:
                if i.isupper():
                    res += 'a'
                else:
                    res += 'A'
        else:
            res += i
    return res

def encode(s:str):
    res = ''
    for i in s:
        if i.isnumeric():
            if i != '0':
                res += num_in[num_in.find(i)-1]
            else:
                res += '9'
        elif i.isalnum():
            if i.lower() != 'a':
                if i.isupper():
                    res += alpha_in[alpha_in.find(i.lower())-1]
                else:
                    res += alpha_in[alpha_in.find(i.lower())-1].swapcase()
            else:
                if i.isupper():
                    res += 'z'
                else:
                    res += 'Z'
        else:
            res += i
    return res

while True:
    try:
        print(code(input()))
        print(encode(input()))
    except:
        break

发表于 2022-08-13 18:09:54 回复(1)
a=input()
b=input()
c=''
for i in range(len(a)):
    if a[i].isalpha():
        if  a[i]>='a' and a[i]<'z':
            c+=chr(ord(a[i])+1).upper()
        elif a[i]=='Z':
            c+='a'  
        elif a[i]=='z':
            c+='A'
        else:
            c+=chr(ord(a[i])+1).lower()
    elif a[i].isdigit():
        if a[i]=='9':
            c+='0'
        else:
            c+=str(int(a[i])+1)
d=''
for i in range(len(b)):
    if b[i].isalpha():
        if b[i]>'a' and b[i]<='z':
            d+=chr(ord(b[i])-1).upper()
        elif b[i]=='A':
            d+='z'
        elif b[i]=='a':
            d+='Z'           
        else:
            d+=chr(ord(b[i])-1).lower()
    elif b[i].isdigit():
        if b[i]=='0':
            d+='9'
        else:
            d+=str(int(b[i])-1)
print(c)
print(d)

发表于 2022-08-09 20:37:55 回复(0)
sl = list(input())
sw = list(input())
xen = "abcdefghijklmnopqrstuvwxyz"
den = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

def jiami(s):
    for i in range(len(s)):
        if s[i].isalpha():
            if s[i] == "z":
                s[i] = "A"
            elif s[i] == "Z":
                s[i] = "a"
            elif s[i].isupper():
                s[i] = den[den.index(s[i]) + 1].lower()
            else:
                s[i] = xen[xen.index(s[i]) + 1].upper()
        elif s[i].isdigit():
            if s[i] == "9":
                s[i] = "0"
            else:
                s[i] = str(int(s[i]) + 1)
    print("".join(s))

def jiemi(s):
    for i in range(len(s)):
        if s[i].isalpha():
            if s[i] == "a":
                s[i] = "Z"
            elif s[i] == "A":
                s[i] = "z"
            elif s[i].isupper():
                s[i] = den[den.index(s[i]) - 1].lower()
            else:
                s[i] = xen[xen.index(s[i]) - 1].upper()
        elif s[i].isdigit():
            if s[i] == "0":
                s[i] = "9"
            else:
                s[i] = str(int(s[i]) - 1)
    print("".join(s))

jiami(sl)
jiemi(sw)
发表于 2022-08-09 01:49:05 回复(0)
#笨方法
#加密:判断是字母还是数字
#字母则使用ASCII进行加密,小写 +32 +1;大写 -32 +1
#数字则+1,9特殊处理
#解密则是反过来

def encrypt(data):
    res = ''
    for i in range(len(data)):
        if data[i].isalpha():
            if data[i] == 'z':
                res+='A'
            elif data[i] == 'Z':
                res+='a'
            elif data[i] < "a":
                res+=chr(ord(data[i]) + 33)
            elif data[i] >= "a":
                res+= chr(ord(data[i]) - 31)
        elif data[i].isdigit:
            if int(data[i]) == 9:
                res+='0'

            else:
                res+=str(int(data[i]) + 1)

    return res

def decrypt(data):
    res = ''
    for i in range(len(data)):
        if data[i].isalpha():
            if data[i] == 'A':
                res+='z'
            elif data[i] == 'a':
                res+='Z'
            elif data[i] > "a":
                res+=chr(ord(data[i]) - 33)
            elif data[i] <= "a":
                res+= chr(ord(data[i]) + 31)
        elif data[i].isdigit:
            if int(data[i]) == 0:
                res+='9'

            else:
                res+=str(int(data[i]) - 1)

    return res


print(encrypt(list(input())))
print(decrypt(list(input())))

发表于 2022-07-29 09:51:05 回复(0)
#枚举
nd_jia, nd_jie, res_jia, res_jie = input(), input(), '', ''
for i in nd_jia:
    if i == '9':
        res_jia += '0'
    elif ord(i) >= 48 and ord(i) <= 56:
        res_jia += str(int(i)+1)
    elif i == 'z':
        res_jia += 'A'
    elif i == 'Z':
        res_jia += 'a'
    elif ord(i) >= 97 and ord(i) <= 121:
        res_jia += chr(ord(i)-31)
    elif ord(i) >= 65 and ord(i) <= 89:
        res_jia += chr(ord(i)+33)
    else:
        res_jia += i
print(res_jia)
for i in nd_jie:
    if i == '0':
        res_jie += '9'
    elif ord(i) >= 49 and ord(i) <= 57:
        res_jie += str(int(i)-1)
    elif i == 'A':
        res_jie += 'z'
    elif i == 'a':
        res_jie += 'Z'
    elif ord(i) >= 98 and ord(i) <= 122:
        res_jie += chr(ord(i)-33)
    elif ord(i) >= 66 and ord(i) <= 90:
        res_jie += chr(ord(i)+31)
    else:
        res_jie += i
print(res_jie)

发表于 2022-07-23 21:46:56 回复(0)

问题信息

难度:
78条回答 49084浏览

热门推荐

通过挑战的用户

查看代码